Soru & Cevap

DownloadManager Restart nasıl yapılıyor ?

08.09.2014 - 12:03

Uygulamamda DownloadManager  kullanıyorum.
Bazen dosyalar hata verip indirilmiyor. Kendi activity'im içerisinden bu hatalı olan dosyanın indirilme işlemini, yine DownloadManager ile yeniden otomatik olarak nasıl başlatabilirim ?

 

14 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user burhanaksendir
burhanaksendir
08.09.2014 - 02:28

Android'in kendi içerisindeki Downloads uygulamasında bu kasdettiğim şeyi  şu fonksiyonla yapmışlar:

[code]

public void restartDownload(long... ids) {
        Cursor cursor = query(new Query().setFilterById(ids));
        try {
            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
                int status = cursor.getInt(cursor.getColumnIndex(COLUMN_STATUS));
                if (status != STATUS_SUCCESSFUL && status != STATUS_FAILED) {
                    throw new IllegalArgumentException("Cannot restart incomplete download: "
                            + cursor.getLong(cursor.getColumnIndex(COLUMN_ID)));
                }
            }
        } finally {
            cursor.close();
        }

        ContentValues values = new ContentValues();
        values.put(Downloads.Impl.COLUMN_CURRENT_BYTES, 0);
        values.put(Downloads.Impl.COLUMN_TOTAL_BYTES, -1);
        values.putNull(Downloads.Impl._DATA);
        values.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_PENDING);
        mResolver.update(mBaseUri, values, getWhereClauseForIds(ids), getWhereArgsForIds(ids));
    }

[/code]

Ama uyarlayamadım kendi uygulamam içerisinde.

Profile picture for user burhanaksendir
burhanaksendir
08.09.2014 - 02:15

Aldığım hata ERROR_CANNOT_RESUME oluyor. Onu da  status kontrolü yaparken yakalıyorum. Sorun işte tam burada. Tetiklemeyi nasıl yapıyoruz ?
Mesela DownloadManager.remove() var id'ye göre siliyorsun. Ama DownloadManager.retry() veya restart() yok. ?
Kasdettiğim tam olarak bu.

Ahmet Burak Demirkoparan
08.09.2014 - 02:20
Birazcık göz attım evet öyle bir method yok DownloadManager i null yapıp yeniden türetip start yap istersen
Burhan Aksendir
08.09.2014 - 05:05
Dowload manager ID'yi kaydediyorum ve hata olduğunda ilgili id üzerinden işlemleri yapıyorum. O yüzden null olayı olmadı
picture-1372-1408467635.jpg
ahmtbrk
08.09.2014 - 12:41

http://developer.android.com/reference/android/app/DownloadManager.html

bu sayfaya göz atarsan error kısımları var.nasıl download'ın sağlıklı bir biçimde gerçekleştiğini kontrol etmek için ACTION_DOWNLOAD_COMPLETE intent filterisini verip bi receiver register ediyorsan aynı şekilde bir tanede hatalar için register edip orada hataya düştüğünde receiver içinde tekrar tetikleme yapman gerekiyor.